/**
 *  时间工具 utils
 * @author 洪吉林
 */
class dateUtils {

  /**
   * 1. 将时间戳转换成时间格式 如:2020/12/31 下午11:59
   * @param nS 传入的时间戳
   */
  getLocalTime = (nS: any) => {
    if (nS == "请输入开始时间" || nS == "请输入到期时间") return nS
    else
      return new Date(parseInt(nS)).toLocaleString().replace(/:\d{1,2}$/, ' ');
  }
  /**
   * 2. 将时间戳转换成时间格式 国际格式
   * @param nS 传入的时间戳
   */
  getLocalTimeDate = (nS: any) => {
    return new Date(parseInt(nS)).toLocaleString()
  }

  /**
   * 3. 显示时间样式 如果一天内的返回true
   * @param deadline 到期时间戳
   */
  computedDayShow = (deadline: any) => {
    const time = this.intervalTime(new Date().getTime(), deadline)
    if (time == 0) return true
    else return false
  }

  /**
   * 4. 创建随机id,这样保证id不重复
   */
  newId = () => {
    let c = new Date().getTime()
    let r = Math.round(Math.random() * (100000));
    return c + r;
  }
  /**
   * 5.计算时间,返回对应显示字符串
   * @param deadline  结束时间戳
   */
  computedDay = (deadline: any) => {
    const time = this.intervalTime(new Date().getTime(), deadline)
    if (time > 0 && time <= 7) return time + " 天后  截止"
    else if (time < 0) return this.getLocalTime(deadline) + "  已过期 " + Math.abs(time) + "天"
    else if (time == 0) return "一天内   到期"
    else {
      const a = this.getLocalTime(deadline)
      return a
    }
  }
  /**
 * 6. 时分秒换算 返回一个天数,也可换成其他
 * @param startTime  开始时间
 * @param endTime 结束时间
 */
  intervalTime = (startTime: number | string, endTime: number | string) => {
    endTime = Number(endTime)
    startTime = Number(startTime)
    let nTime = endTime - startTime
    //这里发现有1000换算单位
    nTime = nTime / 1000
    let day = Math.floor(nTime / 86400); //此处选择向下取整,可按照需求更换
    let hour = Math.floor(nTime % 86400 / 3600);
    let minute = Math.floor(nTime % 86400 % 3600 / 60);
    return day
  }
}

const dateutils = new dateUtils()
export default dateutils

